package com.xiaoc.bulldozer.common.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.xiaoc.bulldozer.common.dto.StatisticAccountDto;
import com.xiaoc.bulldozer.common.dto.StatisticAccountQueryDto;
import com.xiaoc.bulldozer.common.dto.StatisticInternetBankQueryDto;
import com.xiaoc.bulldozer.common.model.StatisticAccount;
import com.xiaoc.bulldozer.common.model.StatisticInternetBank;

/**
 * StatisticAccount Service 接口
 *
 * @author Danfo Yam
 * @date 2018-11-12 14:51:41
 */
public interface StatisticAccountService {

    /**
     * 根据条件查询StatisticAccount数量
     *
     * @param StatisticAccountQueryDto
     * @return 满足查询条件的记录数量
     */
    public Integer getStatisticAccountCountByCondition(StatisticAccountQueryDto statisticAccountQueryDto);

    /**
     * 根据条件分页查询StatisticAccount列表
     *
     * @param StatisticAccountQueryDto
     * @return 满足查询条件的StatisticAccount列表
     */
    public List<StatisticAccount> getStatisticAccountListByCondition(StatisticAccountQueryDto statisticAccountQueryDto);

    /**
     * 获取电子银行短信发送信息
     * @param map
     * @return
     */
    List<StatisticInternetBank> getStatisticInternetBankList(StatisticInternetBankQueryDto queryDto);

    public Integer getStatisticInternetBankCount(StatisticInternetBankQueryDto queryDto);

    public StatisticInternetBank getStatisticInternetBankCountByCode(StatisticInternetBankQueryDto queryDto);

    /**
     * 根据Id获取StatisticAccount
     *
     * @param id
     * @return StatisticAccount对象
     */
    public StatisticAccount getStatisticAccountById(Integer id);

    /**
     * 获取所有StatisticAccount列表
     *
     * @return StatisticAccount列表
     */
    public List<StatisticAccount> getAllStatisticAccountList();

    /**
     * 新增StatisticAccount
     *
     * @param statisticAccount
     * @return void
     */
    public void save(StatisticAccount statisticAccount);

    /**
     * 更新StatisticAccount
     *
     * @param statisticAccount
     * @return void
     */
    public void update(StatisticAccount statisticAccount);

    /**
     * 根据Id删除StatisticAccount
     *
     * @param id
     * @return void
     */
    public void deleteById(Integer id);


    /**
     * 获取点赞数
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public List<StatisticAccountDto> getAwardPartnerCountForTalentByTime(long startTime, long endTime);


    /**
     * 获取注册数
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public List<StatisticAccountDto> getAccountCountForTalentByTime(long startTime, long endTime);


    /**
     * 获取贷款数
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public List<StatisticAccountDto> getLoanCountForTalentByTime(long startTime, long endTime);

    /**
     * 通过时间段删除
     * @param type
     * @param startTime
     * @param endTime
     */
    public void deleteByTypeAndTime(Integer type, long startTime, long endTime);

    /**
     * 批量新增
     *
     * @param statisticAccountList
     */
    public void saveBatch(List<StatisticAccount> statisticAccountList);

    /**
     *  查询StatAmount 集合
     * @param statisticAccountQueryDto
     * @return
     */
    public List<StatisticAccountDto>  getStatAmountListByCondition(StatisticAccountQueryDto statisticAccountQueryDto);

    /**
     *  查询满足条件的 StatisticAccountDto 列表
     * @param statisticAccountQueryDto
     * @return
     */
    public List<StatisticAccountDto> getStatisticAccountDtoListByCondition(StatisticAccountQueryDto statisticAccountQueryDto);


    /**
     * 查询满足条件的 StatisticAccountDto 数量
     * @param statisticAccountQueryDto
     * @return
     */
    public Integer getStatisticAccountDtoCountByCondition(StatisticAccountQueryDto statisticAccountQueryDto);



}
